package my.graduation.controller.admin;

import my.graduation.dto.EmployeeLoginDto;
import my.graduation.dto.EmployeeLogoutDto;
import my.graduation.dto.AdminInfoDto;
import my.graduation.dto.RepassDto;
import my.graduation.result.Result;
import my.graduation.service.AdminService;
import my.graduation.vo.AdminLoginVO;
import my.graduation.vo.AdminVO;
import my.graduation.vo.PatientVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @Author: RavenLyn
 * @Date: 2024-11-29
 */
@RestController
@RequestMapping("/admin")
public class AdminController {

    @Autowired
    private AdminService adminService;

    /**
     * 管理员登录
     * @param dto
     * @return
     */
    @PostMapping("/login")
    public Result<AdminLoginVO> adminLogin(@RequestBody EmployeeLoginDto dto){
        // 1 管理员
        return adminService.login(dto);
    }

    /**
     * 管理员登出
     * @param dto
     * @return
     */
    @PostMapping("/logout")
    public Result adminLogout(@RequestBody EmployeeLogoutDto dto){
        return adminService.logout(dto);
    }


    /**
     * 获取管理员信息
     * @return
     */
    @GetMapping
    public Result<List<AdminVO>> list(){
        return adminService.getList();
    }

    /**
     * 管理员获取个人信息
     * @param dto
     * @return
     */
    @PostMapping("/personal")
    public Result<AdminVO> getPersonal(@RequestBody AdminInfoDto dto){
        return adminService.getPersonal(dto);
    }

    /**
     * 条件获取管理员信息
     * @param dto
     * @return
     */
    @PostMapping("/con")
    public Result<List<AdminVO>> list(@RequestBody AdminInfoDto dto){
        return adminService.getListByCon(dto);
    }

    /**
     * 新增管理员信息
     * @return
     */
    @PostMapping
    public Result add(@RequestBody AdminInfoDto dto){
        return adminService.add(dto);
    }

    /**
     * 修改管理员信息
     * @return
     */
    @PutMapping
    public Result update(@RequestBody AdminInfoDto dto){
        return adminService.update(dto);
    }

    /**
     * 删除管理员信息
     * @return
     */
    @DeleteMapping
    public Result delete(@RequestBody AdminInfoDto dto){
        return adminService.delete(dto);
    }

    /**
     * 管理员修改密码
     * @param dto
     * @return
     */
    @PostMapping("/repass")
    public Result repass(@RequestBody RepassDto dto) {
        return adminService.repass(dto);
    }
}
